perm filename INT.AL[AL,HE] blob sn#453452 filedate 1979-07-05 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00005 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	{ *************  Programmbeginn und Prozeduren : ****** }
C00005 00003	   { *********  Bedienschleife :  ************ }
C00010 00004	   { *********  Bedienschleife 2.Teil :  ***********}
C00013 00005	{ ********  Programmende :  ***********}
C00014 ENDMK
C⊗;
{ *************  Programmbeginn und Prozeduren : ****** }
    
BEGIN"Int.al"
   FRAME f,punkt,altp;
   VECTOR v1,v2;
   DISTANCE VECTOR v;
   SCALAR einaus;
   SCALAR code,x,y,z,wert;
   SCALAR fzahl,czahl,szahl,grenze;
   FRAME ARRAY fliste[1:25];
   SCALAR ARRAY bcode[1:25];
   DISTANCE SCALAR ARRAY sliste[1:25];
   DISTANCE SCALAR ds;
   DEFINE d = ⊂2.5⊃;
   
   { **********************  PROCEDUREN : ****************}
     
   PROCEDURE xyzwert(SCALAR x,y,z);
   BEGIN
        PRINT(" *** X:");   x ← INSCALAR;
        PRINT(" *** Y:");   y ← INSCALAR;
        PRINT(" *** Z:");   z ← INSCALAR;
   END;
    
   PROCEDURE xyzaus(DISTANCE VECTOR v);
      PRINT(" X= ",v.XHAT*d," Y= ",v.YHAT*d," Z= ",v.ZHAT*d,CRLF);
     
   { *********************  Initialisieren : *************}
     
   SLOW;
   grenze ← 25;
   x ← 20;
   y ← 30;
   z ← 7;
   fzahl ← 1;
   czahl ← 1;
   szahl ← 1;
   PRINT(CRLF," Interakt. Bedienprogr. : ",CRLF);
   MOVE BARM TO BPARK
            WITH DURATION = 4*SEC;
   altp ← BARM;
   punkt ← BARM;
   einaus ← TRUE;
   { *********  Bedienschleife :  ************ }
     
   WHILE einaus DO
   BEGIN"Bedienschleife"
      PRINT(CRLF,"0 Arm aus",CRLF,"1 Arm ein",CRLF,"2 Open",CRLF);
      PRINT("3 Close",CRLF,"4 Center",CRLF,"5 Aktion",CRLF,"6 Loesch",CRLF);
      PRINT("8 V.V",CRLF,"9 V*V",CRLF,"10 F*V",CRLF);
      PRINT("12 BPARK",CRLF,"13 *** Ende",CRLF);
      code ← INSCALAR;
      v ← POS(punkt);
      IF (fzahl>grenze)∨(czahl>grenze)∨(szahl>grenze) THEN
            BEGIN
            fzahl ← 1;
            czahl ← 1;
            szahl ← 1;
            END;
      CASE code OF
         BEGIN
             [0]  xyzaus(v);
             [1]  BEGIN
                       xyzwert(x,y,z);
                       v ← VECTOR(x,y,z)*CM;
                       punkt ← FRAME(ORIENT(altp),v);
                       altp ← punkt;
                       MOVE BARM TO punkt DIRECTLY WITH NULLING;
                       fliste[fzahl] ← punkt;
                       fzahl ← fzahl + 1;
                       bcode[czahl] ← 1;
                       czahl ← czahl + 1;
                  END;
             [2]  BEGIN
                       PRINT(" Wert:");   wert ← INSCALAR;
                       ds ← wert*CM;  
                       OPEN BHAND TO ds;
                       sliste[szahl] ← ds;
                       szahl ← szahl + 1;
                       bcode[czahl] ← 2;
                       czahl ← czahl + 1;
                  END;
             [3]  PRINT(" Nicht implementiert !");
             [4]  BEGIN
                       CENTER BARM;
                       bcode[czahl] ← 3;
                       czahl ← czahl + 1;
                  END;
             [5]  BEGIN
                       SCALAR i,k,l,m;
                       k ← 1;   l ← 1;   m ← 1;
                       MOVE BARM TO BPARK
                               WITH DURATION = 6*SEC;
                       FOR i ← 1  STEP 1 UNTIL  czahl - 1  DO
                          BEGIN
                          CASE bcode[i] OF
                          BEGIN
                            [1]  BEGIN
                                 MOVE BARM TO fliste[k] DIRECTLY;
                                 k ← k + 1;
                                 END;
                            [2]  BEGIN
                                 OPEN BHAND TO sliste[l];
                                 l ← l + 1;
                                 END;
                            [3]  CENTER BARM;
                           ELSE
                                 PRINT("*** Codefehler !",CRLF)
                          END
                          END
                  END;
             [6]  BEGIN
                       fzahl ← 1;
                       czahl ← 1;
                       szahl ← 1;
                       PRINT(" Aktion geloescht !",CRLF);
                  END;
   { *********  Bedienschleife 2.Teil :  ***********}
       
             [8]  BEGIN
                       PRINT(" V.V: ");
                       xyzwert(x,y,z);   v1 ← VECTOR(x,y,z);
                       xyzwert(x,y,z);   v2 ← VECTOR(x,y,z);
                       wert ← v1.v2;
                       PRINT(" *** V.V = ",wert,"CRLF");
                  END;
             [9]  BEGIN
                       PRINT(" V*V:",CRLF);
                       xyzwert(x,y,z);   v1 ← VECTOR(x,y,z);
                       xyzwert(x,y,z);   v2 ← VECTOR(x,y,z);
                       v ← v1*v2*CM;
                       PRINT(" *** V*V= ");
                       xyzaus(v);
                  END;
             [10] BEGIN
                       PRINT(" *** F*V: ");
                       xyzwert(x,y,z);
                       f ← FRAME(NILROTN,VECTOR(x,y,z)*CM);
                       xyzwert(x,y,z);   v2 ← VECTOR(x,y,z);
                       v ← f*v2;
                       PRINT(" *** f*v = ");
                       xyzaus(v);
                  END;
        
             [8]  MOVE BARM TO BPARK
                          WITH DURATION = 4*SEC;
             [9]  einaus ← FALSE;
        
           ELSE
               PRINT("  Falscher Code !",CRLF,CRLF)
        END
   END"Bedienschleife";
{ ********  Programmende :  ***********}
   
MOVE BARM TO BPARK
         WITH DURATION = 4*SEC;
PRINT(CRLF," ***** Programmende !",CRLF);
  
END"Int.al"